home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / sound / dmp108.zip / DMP.DOC next >
Text File  |  1996-04-06  |  25KB  |  538 lines

  1.                     Dual Module Player for OS/2 1.08
  2.                     --------------------------------
  3.  
  4. This is a port of Otto Chrons' Dual Module Player 4.0 (a DOS program) by
  5. Julien Pierre.
  6.  
  7. Dual Module Player is a program for playing music modules on different
  8. sound systems on IBM PC compatible machines. It uses DSMI sound
  9. programming interface (Digital Sound & Music Interface) to achieve
  10. high quality sound and wide sound card support.
  11.  
  12. Currently DMP supports following module formats:
  13.  
  14.     MOD,NST     The original Amiga module format (SoundTracker,
  15.                 NoiseTracker). Also supported by many PC trackers.
  16.                 Original format supported only 4 channels but many
  17.                 variants can support up to 32 channels.
  18.  
  19.     STM,S3M     Scream Tracker format. S3M can support up to 16
  20.                 channels while STM is limited to 4.
  21.  
  22.     669         Composer669 module format using 8 channels.
  23.  
  24.     FAR         Farandole tracker format capable of using 16 channels.
  25.  
  26.     MTM         MultiTracker format. It's a MOD variant with up to 32
  27.                 channels.
  28.  
  29.     AMF         DSMI's internal module format. You can convert all the
  30.                 previous formats to AMF with M2AMF but not vice versa.
  31.                 Using AMF format saves you disk space because AMFs are
  32.                 usually smaller than other module formats. DMP can
  33.                 also load AMFs faster than other formats. But remember
  34.                 that you cannot play AMFs on any other player, nor can
  35.                 you convert AMFs back to any other format.
  36.  
  37. The command-line syntax is the following :
  38. DMP module [/8] [/16] [/11K] [/22K] [/44K] [/MONO] [/STEREO] [/RANDOM]
  39. [/AMP={NONE,AUTO,LOW,MEDIUM,HIGH}] [/QUALITY] [/NOQUALITY] [/VOL={0-100}]
  40. [/DRIVER={DART,FILE,MMPM2,NOSOUND}] [/FILENAME=name] [/DARTBUFFER=size]
  41. [/LOOP] [/NOPLAY] [/EFF=xx] [/EFFECT=<my_effect_definition>] [/SURROUND]
  42.  
  43. All the parameters in [] are optional. The order is not relevant.
  44. The only parameter you have to specify is the module filename.
  45.  
  46. By default, DMP will try to use DART using quality mode, and AUTO
  47. amplification level. It will also try to find the best capabilities for your
  48. soundcard. Priority is in this order : stereo, resolution, then sampling rate.
  49. For example, that means DMP will choose stereo 8-bit 44kHz over mono
  50. 16-bit 44kHz, even though they are the same data rate.
  51. If you specify the sampling rate, resolution, or stereo via the command-line,
  52. this autodetection is disabled.
  53. If DMP can't initialize DART, it will automatically try MMPM2 mode.
  54. If you specify a driver via the command line, DMP will only use this one
  55. and not try any other driver.
  56. DMP will report an error if it cannot initialize the soundcard.
  57.  
  58. You can get an explanation on the parameters by typing DMP without any
  59. parameter.
  60. Here are some additional information :
  61.  
  62. /8 : switches to 8-bit mode. Default is 16-bit.
  63. Using 8-bit mode degrades the quality. It doesn't decrease the CPU usage -
  64. except if you use the MMPM/2 sound driver.
  65. You should only use this if you have an 8-bit soundcard like an original
  66. Soundblaster or Soundblaster Pro.
  67. /16 : switches to 16-bit mode, which is the default. 16-bit samples give
  68. a better sound quality and should be used if your soundcard is
  69. capable of 16-bit sound.
  70.  
  71. /MONO : sets monophonic mode. Default is stereophonic.
  72. Using this option will divide the CPU time required by two.
  73. /STEREO : sets stereophonic mode, which is the default.
  74.  
  75. /NOQUALITY : disables quality mode. Default is quality mode.
  76. Quality mode was originally implemented only on 8-bit sounds cards to
  77. overcome the dynamic limitation of 8-bits. It uses 16-bit mixing
  78. routines to achieve 96dB dynamic range (instead of 48dB) and post
  79. processes the 16-bit data into 8-bits with a look-up table that
  80. amplifies the sound. Because of this post processing, the Quality mode
  81. takes more processor power but it's worth it. To further amplify the
  82. sound you can use '/AMP=level' command line option.
  83. The sound drivers only support quality mode when mixing at 8 bit.
  84. Initialization will fail if you try /8 in conjunction with /NOQUALITY.
  85. For 16-bit cards there's no need to use Quality mode to improve the
  86. quality of the sound. But with up to 32 channels the dynamics of
  87. individual channels go worse i.e. the volume is lower. You can of
  88. course select an amplification option in the sound setup to amplify the
  89. sound but there is always a risk of click and noise if the sound
  90. overruns.  This is where 16-bit Quality mode comes in. It uses a
  91. temporary 32-bit buffer to do the mixing and post processes the buffer
  92. by clipping values that can't fit to 16-bits. 
  93. /QUALITY : enables quality mode, which is the default.
  94.  
  95. /DRIVER=name : sets the sound driver. May be DART (default), MMPM/2, or FILE.
  96. /DRIVER=MMPM2 :
  97. If DMP cannot initialize DARt, it will use the MMPM/2 sound driver which
  98. should work on all soundcards supported by MMPM/2. However, this requires a
  99. lot of memory for buffering, and also a lot of CPU. Because of buffering, the
  100. response to keyboard commands will be delayed - from 4 seconds in 16-bit 44
  101. kHz stereo mode to about one minute if you use 8-bit 11 kHz mono mode (I
  102. strongly discourage you from using this one !). Also, there will be a
  103. corresponding delay before the sound begins. So be patient when using
  104. low-quality modes ! Don't e-mail me to say you don't hear anything.
  105. The initial delay is due to a bug in MMPM/2 that I bypassed by putting 800
  106. KB of blank data at the beginning. If IBM solves this one, I could remove it.
  107. However, the delay in response cannot be suppressed when using MMPM/2
  108. playlists. The delay doesn't apply to the volume command, which controls the
  109. hardware setting of the soundcard.
  110. /DRIVER=DART :
  111. To overcome these limitations, IBM created DART - Direct Audio real-time.
  112. It allows much faster access to the soundcard, and real-time as the name says.
  113. It has none of the drawbacks of MMPM/2 playlists mentioned above.
  114. There will be no initial delay and the keyboard response should be instant.
  115. The problem with DART is that it hasn't been officially released. To use it,
  116. you need two DLLs from the Entertainment Toolkit that is found on
  117. Developer's Connection Volume 8 - new versions of AMPMXMCD.DLL and AUDIOSH.DLL.
  118. I was told they could be found at
  119. http://www.polsci.wvu.edu/Henry/Files/dart.zip
  120. Download at your own risk.
  121. Another problem is that it doesn't work well with all soundcards (see the
  122. /DARTBUFFER parameter), and some cards will require new drivers.
  123. IBM still hasn't answered me about the distribution of the DART DLLs - I
  124. don't know if I am allowed to distribute them with my application. In doubt,
  125. I didn't put them. So sadly you'll have to get a Devcon 8 to use DMP in DART
  126. mode.
  127. /DRIVER=FILE :
  128. This sound driver directs output to the hard disk, just as in the first alpha
  129. of DMP that was released in August. By default it goes to TEST.WAV, but you
  130. can change this with /FILENAME=name.
  131. The volume command has no effect in this mode.
  132. /DRIVER=NOSOUND :
  133. This is a fake sound driver. There is no output when using that driver. It's
  134. mostly there for testing. You can also use it with /NOPLAY to test if your
  135. modules are loadable with DMP.
  136.  
  137. /NOPLAY :
  138. Prevents DMP from playing the file. In this mode, DMP will just load the files
  139. given at the command line without playing them or prompting for keyboard.
  140. It's useful to test if your modules are compatible with DMP. If you don't want
  141. DMP to take the sound card, use /DRIVER=NOSOUND.
  142.  
  143. /DARTBUFFER=size :
  144. This parameter sets the size of the DART buffer.
  145. By default, DMP will use the value suggested by the soundcard driver.
  146. If you have problems with the sound (distortion, or sound stops under heavy
  147. system load), you can override it. Be careful with that parameter.
  148. The current beta of DART (from Devcon 8/9) can crash OS/2 entirely when using
  149. incorrect parameters. It does this if I use a small buffer (<512 bytes) or
  150. large (>64K). Beware that the higher the buffersize, the less real-time DMP
  151. will be.
  152. If you can't get it to work right, try running DMP in MMPM/2 mode instead.
  153. New soundcard drivers may also solve the problem.
  154.  
  155. /LOOP :
  156. This mode will make the module loop forever. You'll have to type ESC to stop it.
  157.  
  158. :songlist : plays a list of files.
  159. This option will make DMP play each module listed in the "songlist" file.
  160. It must be an ASCII file containing the full name of each module with relative
  161. paths. You can include wildcards inside songlists.
  162.  
  163. /RANDOM : will play the modules in random order.
  164.  
  165. /VOL=xxx : sets the volume to xxx at the beginning of the program, with
  166. 0<=xxx<=100.
  167.  
  168. /MOD : when this switch is on, DMP will assume that a file is a 15-channel
  169. MOD when it doesn't recognize its format. By default it will report an error.
  170. This is needed because these modules do not have a signature.
  171. Beware : if you try to load non-MOD files, it might crash the program.
  172.  
  173. /EFF=xx : selects predefined effect number xx. See the list of effects in the
  174. effects section later in this file.
  175.  
  176. /EFFECT=<my_effect_definition> : creates and selects your own effect. See the
  177. documentation on "Creating your own effects" later in this file.
  178.  
  179. /SURROUND : enable Surround sound for all channels. Be aware that a module can
  180. change the panning on any channel and thus reset it while playing. You can
  181. reset all channels to Surround during playing with the S key. You can also
  182. disable surround with the R key.
  183.  
  184. I think that's it.
  185.  
  186.                                 Surround Sound
  187.                                 --------------
  188.  
  189. Surround sound is implemented! Pressing the 'S' key sets the module into
  190. surround. If you have a Dolby Pro Logic Surround Sound Decoder you can hear
  191. the sound coming from your surround speaker, but even without this decoder you
  192. get a more "spacier" effect (similar effect found on many stereo TVs to enhance
  193. mono sound). Use command line option /SURROUND to set all tracks to surround mode.
  194.  
  195.                                 Digital effects
  196.                                 ---------------
  197.  
  198. New to DMP 1.07 is the support for digital effects. Currently you can do
  199. reverb/echo style of effects and simple lowpass filtering.
  200.  
  201. There are 10 predefined effects and you can select between them with command
  202. line parameter '/EFF=x' (where x=0 to 9).
  203.  
  204.                                 Filters
  205.                                 -------
  206.  
  207. You can use two different lowpass filters to filter the noise caused by
  208. aliasing in mixing routines. These filters are really simple so they
  209. don't use much processor power.
  210.  
  211. Filter 1 algorithm is defined as:
  212.  
  213.             y(n) = 0.5*x(n) + 0.5*x(n-1)
  214.  
  215. Filter 2 is:
  216.  
  217.             y(n) = 0.75*x(n) + 0.25*x(n-1)
  218.  
  219. Of course the actual filter routines use simple additions and shifts instead
  220. of floating point multiplications to achieve best possible speed.
  221.  
  222. By default DMP uses the Filter 2 (this can be changed with '/EFF=x' command
  223. line parameter).
  224.  
  225.  
  226.                                 Reverb/echo effects
  227.                                 -------------------
  228.  
  229. DMP uses a user definable reverb/echo engine to create effects from massive
  230. reverbs to funny sounding echos. Here is the diagram of that engine.
  231.  
  232.  
  233.      ┌─────┐                                    ┌────────┐
  234.      │Input├─────────────────────────────────┬──┤        │          ┌──────┐
  235.      └─────┘                   ┌────────┐    │  │ Filter ├──────────┤Output│
  236.         ┌──────────────────────┤        ├────│──┤        │          └──────┘
  237.         │        ┌─────────────┤ Filter │    │  └────────┘
  238.         │        │     ┌───────┤        ├─┐  │
  239.         │        │     │       └────────┘ │  │
  240.         │        │     │                  │  │
  241.         │        │     │                  │  │
  242.         │        │     │                  │  │
  243.         │        │     │                -----│
  244.         │        │     │        feedback\ G /│        G = gain
  245.  "echos"│        │     │                 \_/ │
  246.        / \      / \   / \                 │  │        D = delay
  247.       / G1\    / G2\ / G3\                │  │
  248.       -----    ----- -----                │  │
  249.         │        │     │                 ┌┴──┴┐
  250.         │        │     │                 │ ++ │
  251.         │        │     │                 └──┬─┘
  252.         │        │     │                    │
  253.         │        │     │                    │
  254.      D1 │     D2 │  D3 │                    │
  255.     ┌───┴────────┴─────┴───────────────┐    │
  256.   ┌─┤        delay line                │    │
  257.   │ └──────────────────────────────────┘    │
  258.   │                                         │
  259.   │                                         │
  260.   └─────────────────────────────────────────┘
  261.  
  262.  
  263. The number of echos can be from one to eight and each has its own position on
  264. the delay line and its own gain value. You can change the number of echos and
  265. parameters for each echo on the command-line using /EFFECT=<your echo>.
  266.  
  267. You can also set the "feedback" value.
  268.  
  269. You can also use negative gain values to create a 180 degree phase shift.
  270.  
  271. The filters used in reverb are the same as in filter 1.
  272.  
  273. Setting a reverb on the command line looks like following:
  274.  
  275. /EFFECT=<effect_name> R <feedback> <echo 1 delay> <echo 1 gain>
  276. Use a tilde ("~") character as space character.
  277.  
  278. See "Creating your own effects" for examples on reverbs and echos.
  279.  
  280.  
  281.                                 Reverb performance
  282.                                 ------------------
  283.  
  284. Calculating one echo in reverb engine requires a few simple arithmetic
  285. instructions and one multiplication. In addition calculating feedback
  286. requires another multiplication. So with a 6 echo reverb the routine
  287. must do seven multiplications and lots of simple instructions for EACH
  288. AND EVERY SAMPLE from input. In comparison the mixing routines in the
  289. actual sample playback engine require only a few simple instructions
  290. per sample.
  291.  
  292. Unless you have a powerful 486 it's not wise to use stereo mode
  293. because this doubles the reverb overhead. Even on a 486/33 using
  294. reverb with 44kHz stereo data can bring the machine on its knees. On
  295. slower machines you will start to hear pauses in the playback
  296. as DMP can't keep up with sound card DMA.
  297.  
  298. Using simple echos requires a lot less processor computing power, it's
  299. all dependant on the number of echos.
  300.  
  301.  
  302.                                 Creating your own effects
  303.                                 -------------------------
  304.  
  305. You can define your own effect by using the /EFFECT="my effect definition" parameter.
  306.  
  307. Here is the description of an effect :
  308.  
  309. "name type parm0 [parm1] [parm2] ..."
  310. Use a tilde "~" character for spacing.
  311.  
  312. <name> is a one word name for the effect and cannot contain white space
  313. You can use '_' instead of space character to break it into multiple words
  314.  
  315. <type> can be:
  316.  
  317. R     Reverb/echo effect.
  318.           parm0 is feedback value (0-100).
  319.           parm1...parmN define a maximum of 8 reverb delay/gain pairs
  320.       for example:
  321.           Effect1 = HallReverb R 40  30 50  40 30  50 20  60 30
  322.       defines Reverb with 40% feedback and echo positions at
  323.       30ms (50% gain), 40ms (30% gain), 50ms (20% gain), 60ms (30% gain)
  324.  
  325.       Negative gain values can be used to create 180 degree phase shift
  326.  
  327. F     Filter effect. parm0 is the type of the filter:
  328.       1 = Simple lowpass filter (effective)
  329.       2 = Simple lowpass filter (soft)
  330.  
  331. Here are the definitions for the 10 DMP predefined effects :
  332.  
  333. Effect 0 : No_Effect
  334. Effect 1 : Lowpass_filter~F~1
  335. Effect 2 : Soft_lowpass_filter~F~2
  336. Effect 3 : Hall_reverb~R~30~100~-15~120~30~140~-35~175~30~200~20
  337. Effect 4 : Room_reverb~R~35~5~20~20~-30~30~-20~40~40
  338. Effect 5 : Hall_reverb_big~R~86~42~16~79~-19~107~24~157~-27~163~28
  339. Effect 6 : Metallic_reverb~R~60~30~30~40~-25~50~25~80~25
  340. Effect 7 : Air_Duct_Reverb~R~60~20~18~40~-48~50~-58~90~13
  341. Effect 8 : Distant_echo~R~75~160~30~300~50
  342. Effect 9 : Bass_boost~R~0~0~60
  343. Effect 10 : Heavy_bass_boost~R~-10~0~150
  344.  
  345.                                 GREETINGS
  346.                                 ---------
  347.  
  348. I have to thank many people for their testing of DMP. If you have been
  349. forgotten, I'm sorry. I'll put you in the next version ;)
  350. Oc, Culus, Nightboob, Os2wizard, dandaman, rwg, hrbeing, Timur Tabi, alav,
  351. Linden deCarmo.
  352.  
  353. I must say the OS/2 porting was a real nightmare. It lasted 17 months,
  354. but it made me about 10 years older even though I'm only 19.
  355.  
  356.                             CONTACTING THE AUTHOR
  357.                             ---------------------
  358.  
  359. I can be contacted on the internet as madbrain@netsrq.com.
  360.  
  361. I recently moved from France to Florida. My new mailing address is :
  362.  
  363. Julien Pierre
  364. 1664, Cherry Lane
  365. Appartment 3
  366. Sarasota, Florida 34236
  367. USA
  368.  
  369. You can also find me as "madbrain" on Internet Relay Chat (check my name
  370. as several people are using that nickname unfortunately).
  371.  
  372. You can usually find the latest release version of DMP on hobbes.nmsu.edu.
  373. Betas will be available from my homepage at
  374. http://www.polsci.wvu.edu/Henry/Madbrain
  375. Note : the server went down as of March 18th, but it should be back about a
  376. week later.
  377.  
  378.                                     BUGS
  379.                                     ----
  380.  
  381. No program is 100% bug free and DMP is no exception, but I have been fighting
  382. with bugs very hard before releasing it - that's why it took so much time.
  383. If you ever used the alphas of DMP that I posted on Hobbes, you can see the
  384. huge improvement. I have been congratulated about its stability indeed.
  385.  
  386. When reporting a bug, please always mention which soundcard you are using,
  387. with the version of the driver, the version of MMPM/2 and OS/2.
  388.  
  389. Known bugs :
  390. - Users have reported various problems when using some soundcards :
  391. * PAS/16. Here is my advice for this card : use the DART DLLs and the
  392. /DARTBUFFER=16384 parameter. MMPM2 mode may or may not work correctly.
  393. * SB Pro. Volume control is reportedly screwed. But CL isn't developing
  394. the SB Pro drivers anymore.
  395. * SB AWE 32
  396. * GUS. I'm told you should use ULTRA085 for DMP to work with it.
  397. Others have had great success with those, so I don't really know what to
  398. do. It seems to depend a lot on the driver. Actually I have regular SB16s in
  399. both of my machines so I can't test them all myself.
  400. I'm going to fix DMP for the PAS/16 at least as my mother has one in her PC.
  401. I wish the SB Pro driver would load with a SB16, but there is a hardware
  402. check and it doesn't. For SB AWE and GUS, you're on your own - unless you
  403. want to offer me one. You have my address afte all !
  404. - In MMPM/2 mode, the module stops before it is finished. That's because of
  405. MMPM/2 buffering. It will eventually be corrected, but I recommend using
  406. DART wherever possible.
  407. - a few modules will still crash DMP. But they also crash DMP for DOS :-)
  408. * New SB "DART" drivers.
  409. I have been in contact with the driver author at Creative. He says it
  410. they work fine as long as you set the DARTBUFFER at half the size of
  411. the DMA buffer set in CONFIG.SYS on the command-line of your driver.
  412. Doesn't sound very practical to me ! It looks like the previous (Warp)
  413. SB drivers were more DART-compliant !
  414.  
  415.                               REVISION HISTORY
  416.                               ----------------
  417.  
  418. 1.0, released November 30th, 1995 : initial release.
  419.  
  420. 1.01, released December 5th 1995 : bugfix in the initialization routine,
  421. addition of songlist mode.
  422.  
  423. 1.02, released December 11th 1995 :
  424. - addition of wildcard support (including inside songlists)
  425. - "@" character for songlists was replaced by ":" since "@" can be used in
  426. filenames
  427. - addition of "/VOL=" option to set volume on startup
  428. - you can now use any number of songlists and files on the command line
  429. - addition of the "Q" key to exit the program instead of going to the next
  430. module
  431. - addition of random playing mode with /RANDOM
  432.  
  433. 1.03, released December 19th 1995 :
  434. - correction of a small bug in file parsing introduced in 1.02.
  435. Apparently I was the only one to discover it.
  436. - separation of the DSMI interface and the sound drivers.
  437. DSMI is now compiled with Watcom instead. As a result :
  438. * some corrupted modules which previously caused DMP to crash
  439. will now load. This is because of differences between the IBM &
  440. Watcom runtime libraries.
  441. * no more bug in looping mode. I still have to figure out why,
  442. though :-)
  443. - the sound drivers remain compiled with IBM C Set ++ because I
  444. can't get the Warp Toolkit to work with Watcom correctly, and
  445. some of my C++ doesn't work with it also.
  446. - small modification in DART volume command. *might* correct a
  447. problem with DART & SB Pro. I need feedback on this.
  448. - DSMI for OS/2 should now be at the exact same level of
  449. stability as the DOS version.
  450. - Phone bill to pay now $3000 :-(
  451.  
  452. 1.04, released February 10th 1996 :
  453. - added the /MOD parameter to assume 15-channel MOD file.
  454. - removed some debug code in the DART sound driver that caused beeps to
  455. be generated on the PC speaker.
  456. - added support for /16, /STEREO and /QUALITY parameters to make the
  457. command-line more consistent.
  458. - corrected a bug in memory deallocation that caused a crash.
  459. - added support for the NOSOUND driver via /DRIVER=NOSOUND.
  460. - added the /NOPLAY parameter.
  461. - made DETECT mode the default and removed the /DETECT parameter.
  462. - added information about the sound driver loaded by DMP and its settings.
  463. - corrected a bug in the FILE driver which appeared when overriding the output
  464. file name.
  465. - modified the DART driver to use the suggested buffer value instead of 4096.
  466. - corrected a bug in the S3M loader which sometimes caused an exception at
  467. the end of a module.
  468. - compiled with C Set ++ 2.1 again
  469.  
  470. 1.05, released March 9th 1996 :
  471. - fixed a stupid bug in command-line parsing that was optimized in 1.04. It
  472. prevented some parameters from being accepted, like /VOL=xx where xx had more
  473. than one digit.
  474. - added the M2AMF utility to convert modules to the AMF format, which takes less
  475. space. Keep in mind you can only play those with DMP, and the conversion only
  476. works one way.
  477. - played with compiler optimizations a bit to reduce EXE/DLL size. I hope it
  478. still works :-)
  479. - modified the sound drivers to return an error when noquality 8-bit mode
  480. was request. Trying this on previous versions produced an exception.
  481.  
  482. 1.06, released March 20th 1996 :
  483. - ExtTempo could cause a crash with incorrect values. Fix 3/14
  484. - MOD loader could cause a hang (with DMP unkillable) in the samples
  485. loading function. Fixed 3/14
  486. - some other MOD loader fixes
  487. - corrupted modules better supported
  488.  
  489. 1.07, released March 23rd 1996 :
  490. - added Filter and Reverb effects using the /EFF= and /EFFECT= parameters
  491.  
  492. 1.08, released April 6th 1996 :
  493. - added Dolby Surround sound option with /SURROUND or S key while playing
  494. - really made Soft Lowpass Filter the default. No filter was used by default
  495. in 1.07 despite what the doc said
  496. - now shows which effect is used upon startup
  497. - allows you to change effects while playing with the P/N keys
  498. - switched from C to C++. DMP now uses some features of the IBM Collection
  499. Class Library for memory management. That is why the EXE gained 40K in this
  500. version. The performance is still as good as ever, though.
  501. - DMP will now detect MMPM/2 automatically correctly when DART is not
  502. present on the system. This was a bug in previous versions of DSMI.
  503. - DMP will now display the title of a song when it is loaded
  504.  
  505.                              UPCOMING FEATURES
  506.                              -----------------
  507.  
  508. I may or may not do the following :
  509. - add the .XM module format
  510. - write a MMPM/2 IO Procedure for modules so that they are supported
  511. automatically in all MMPM/2 applications.
  512. - port the textmode interface of DOS DMP to OS/2
  513. - rewrite the MMPM/2 driver so that the buffering problem is gone
  514. - change the driver model to an extensible object-oriented architecture,
  515. so that someone can write a driver for native GUS for example.
  516. - add support for the older SBOS2.SYS driver. This would make DMP work
  517. on SB clone cards that don't have an OS/2 driver.
  518. - modify the multimedia drivers so that system sounds can interupt the
  519. module playing.
  520. - integrate DSMI with the IBM Real-Time MIDI subsystem to make audio/music
  521. synchronization possible.
  522.  
  523. I'm currently developing :
  524. - a PM graphical user interface for DMP
  525. You can find the latest beta on my homepage in the /software directory.
  526.  
  527.                                   LICENSE
  528.                                   -------
  529.  
  530. Dual Module Player for OS/2 is a freeware program.
  531.  
  532. Dual Module Player is copyrighted by me and Otto Chrons.
  533. You are only allowed to distribute it in its original form.
  534.  
  535. Programmers interested in using modules in their OS/2 programs should look at
  536. the DSMI.OS2 file. DSMI is a commercial library, not freeware.
  537.  
  538.